#include <stdio.h>
#ifdef WIN32
#include <windows.h>
#endif
#include "link_list.h"
#include "student.h"

/* windows 控制台支持显示 utf8 编码的中文字符 */
void windows_cmd_support_utf8(void) {
#ifdef WIN32
  system("chcp 65001 & cls"); // cls 用来清除 chcp 的输出
#endif
}
/// @brief 程序入口
/// @return
int main() {
  windows_cmd_support_utf8();
  // 创建链表
  LinkList *list = newLinkList(freeStudent, printStudent);
  int cmd = 1;
  printf_s("========================欢迎使用学生成绩管理系统==================="
           "=========\n");
  printf_s("命令如下:\n");
  printf_s("1:录入学生成绩\n");
  printf_s("2:显示所有学生成绩\n");
  printf_s("3:清空录入的学生\n");
  printf_s("4:根据编号删除学生\n");
  printf_s("0:退出系统\n");
  int no;
  int ok;
  while (cmd) {
    printf_s("请输入命令:");
    scanf_s("%d", &cmd);
    switch (cmd) {
    case 1: {
      Student *stu = newStudent();
      insertLinkListEle(list, stu);
    } break;
    case 2: {
      printLinkList(list);
    } break;
    case 3: {
      clearLinkList(list);
    } break;

    case 4: {
      printf_s("请输入要删除的学生编号:\n");

      scanf_s("%d", &no);
      printf_s("您要删除的学生编号是:%d,是否确定?1(是),0(否)\n", no);

      scanf_s("%d", &ok);
      if (ok == 1) {
        deleteLinkListNode(list, no, getStudentNo);
      }

    } break;

    case 0:
      break;

    default:
      break;
    }
  }
  freeLinkList(list);
  printf_s("再见,欢迎下次使用\n");
  return 0;
}